# 使用官方PHP镜像
FROM php:8.2-apache

# 设置工作目录
WORKDIR /var/www/html

# 安装必要的系统依赖
RUN apt-get update && apt-get install -y \
    libzip-dev \
    zip \
    unzip \
    libpng-dev \
    libjpeg-dev \
    libfreetype6-dev \
    && docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install zip pdo pdo_mysql gd

# 安装Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

# 复制composer.json和composer.lock（如果存在）
COPY composer.json composer.lock* ./

# 安装依赖（使用缓存优化）
RUN composer install --no-dev --optimize-autoloader --no-scripts

# 复制项目文件
COPY . .

# 执行Composer脚本
RUN composer run-script post-autoload-dump

# 设置Apache重写模块
RUN a2enmod rewrite

# 配置Apache虚拟主机
COPY docker/apache.conf /etc/apache2/sites-available/000-default.conf

# 创建必要的目录并设置权限
RUN mkdir -p runtime storage/logs \
    && chown -R www-data:www-data /var/www/html \
    && chmod -R 755 /var/www/html \
    && chmod -R 777 runtime storage

# 设置环境变量
ENV APACHE_DOCUMENT_ROOT=/var/www/html/public

# 配置Apache文档根目录
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf \
    && sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf

# 暴露端口
EXPOSE 80

# 健康检查
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
    CMD curl -f http://localhost/ || exit 1

# 启动命令
CMD ["apache2-foreground"]